Перейти к основному содержимому

Сетевые интерфейсы к базам данных

· 3 мин. чтения

Перевожу список вопросов-ответов для контрольной по предмету Andmebaasi võrguliidesed который в ТТУ ведёт сейчас Erika Matsak и где основная тема - работа с Oracle из Java посредством JDeveloper. Впрочем я думаю и незнакомым с этой темой будет интересно…

Модели данных

  1. Плоская. Одна таблица (сущность/класс) (MS Excel, телефонная книга). Есть заголовки таблиц, типы и собственно данные
  2. Иерархия. Много сущностей (классов/node'ов) между которыми есть только отношения 1:N. Например меню, страны-города-регионы и тд.
  3. Сеть. Объекты могут связаны N:M отношениями. Люди в соц.сетях, ссылочное ранжирование.
  4. Реляционная модель - расширенная модель сети, где связей может быть несколько.
  5. Продукционная модель - набор правил которые могут быть представлены в виде IF (условие) THEN (действие). Используется в промышленных экспертных системах. Наглядно, модульно, однозначно
  6. Семантическая сеть - расширенная модель сети, где отношения фиксированы и производятся над понятиями объектов и классов (иерархические, функциональные, количественные, пространственные, временные, логические и тп.)
  7. Фреймы Минского - собирательный образ данных для представления человеческого абстрактного восприятия. Состоит из структур, ролей, сценариев, ситуаций. Фреймы можно наследовать

Основы реляционных БД

Таблица считается в первой нормальной форме , если её поля атомарны и у неё есть primary key. Таблица считается во второй нормальной форме, если все поля зависят от primary key, но не зависят от его частей. Таблица в третьей нормальной форме, когда primary key полностью идентифицирует ряд.

Некоторые свойства таблиц:

  1. Порядок рядов в таблице не имеет значения - это множество

  2. Объекты уникальны

  3. Объекты могут идентифицироваться через минимальный ключ (primary key) или несколько ключей (keys)

  4. Объекты можно связать друг с другом внешними ключами (foreign key)

  5. Любой параметр ряда может иметь значение NULL

Oracle и доступ из интернета

Из интернета редактируется в Enterprise Manager = Apex = HTML DB. Также есть SQL*Plus - консоль с расширенными SQL-коммандами (например DESCRIBE)
Пользователь может иметь

  • Системную привилегию, например на создание таблиц/пользователей/соединения

  • Объектную привилегию на доступк конкретной таблице

  • Группы привелегий. Например RESOURCE группирует в себе создание триггеров и процедур, DBA - привилегии админов

Основы SQL

Комманды можно разделить на:

  • SELECT/INSERT/UPDATE/DELETE - основные комманды принципа CRUD.
  • WHERE/HAVING/IF/CASE/THEN/IN/LIKE/EXISTS - основные комманды логической фильтрации
  • ORDER/GROUP - аггрегирующие и сортирующие комманды
  • SYSDATE/TO_CHAR/ROUND/...- функции работающие с одним рядом
  • JOIN - объединение таблиц
PL/SQL

Очень похож на Pascal/Delphi. Используется для обработки данных в таблицах.

DECLARE a NUMBER; b NUMBER; d VARCHAR(20); //инициализация c NUMBER := 3; //присваивание ``BEGIN SELECT e,f INTO a,b FROM T1 WHERE e>1; //чтение в переменные INSERT INTO T1 VALUES(b,a); END;

БД, Java и роль JDeveloper

Соединение создаётся через класс DriverManager.getConnection. В Jdeveloper'е большинство кода можно генерировать визуальными компонентами.

Java beans

Это java-классы, созданные по правилам:

  • конструктор без аргументов
  • параметры имеют методы доступа (get/set/is)
  • наследуют интерфейс java.io.Serializeable

На основе таких правил созданы большинство компонентов графических библиотек Swing. Благодаря своей иерархической структуре, IDE могут легко анализировать и показывать внутренности визуальных компонентов.

Oracle JDBC драйверы

JDBC имеет четыре типа драйверов для работы с БД (библиотеки java.sql и javax.sql) - т.н. толстые (нуждающиеся в дополнительных библиотеках - OCI к примеру) и тонкие (написанные полностью на java - thin). Рекомендуется использовать thin-драйверы. От этого часто говорят о "тонком клиенте".